# -*- coding:utf-8 -*-

import requests
import re
import random
import time

class download:

    def __init__(self):
        self.iplist=[
            "111.7.174.139:8088",
            "125.88.74.122:84",
            "111.7.175.45:8080",
            "111.7.175.37:8080",
            "111.7.174.151:80",
            "111.7.175.42:8080",
            "111.7.175.23:8080",
            "111.7.174.150:80",
            "111.7.174.147:80",
            "111.7.174.143:8000",
            "111.7.175.32:8080",
            "111.7.174.139:8080",
            "111.7.175.27:80",
            "111.7.174.136:80",
            "111.7.174.142:80",
            "111.7.175.36:80",
            "111.7.175.31:80",
            "125.88.74.122:82",
            "111.7.175.34:80",
            "111.7.175.40:8080",
            "111.7.174.144:8080",
            "111.7.175.33:8080",
            "111.7.174.144:8000",
            "111.7.174.135:8088",
            "111.7.174.144:80",
            "111.7.174.145:8000",
            "111.7.174.141:80",
            "111.7.175.44:8080",
            "111.7.175.41:8080",
            "111.7.174.143:80",
            "111.7.174.147:8088",
            "111.7.174.142:8080",
            "111.7.174.143:8080",
            "111.7.175.25:8080",
            "111.7.174.151:8000"
        ]

        self.user_agent_list=[
            "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1",
            "Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11",
            "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6",
            "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6",
            "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/19.77.34.5 Safari/537.1",
            "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.9 Safari/536.5",
            "Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.36 Safari/536.5",
            "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
            "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
            "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
            "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",
            "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",
            "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
            "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
            "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
            "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.0 Safari/536.3",
            "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24",
            "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24"
        ]

    def get(self,url,timeout,proxy=None,num_retries=6):
        UA=random.choice(self.user_agent_list)
        headers={'User-Agent':UA}

        if proxy==None:
            try:
                response = requests.get(url, headers=headers,timeout=timeout)
            except:
                if num_retries>0:
                    time.sleep(10)
                    print u"获取网页错误，10后将获取倒数第："+str(num_retries)+u"次"
                    return self.get(url,timeout,num_retries-1)
                else:
                    print "开始使用代理"
                    time.sleep(10)
                    IP = "".join(random.choice(self.iplist))
                    print IP
                    proxy = {"http": IP}
                    return self.get(url, timeout, proxy,)
        else:       ##当代理不为空
            try:
                IP="".join(random.choice(self.iplist))
                proxy={"http":IP}
                #print IP
                response=requests.get(url,headers=headers,proxies=proxy,timeout=timeout)
                return response
            except:
                if num_retries>0:
                    time.sleep(10)
                    IP = "".join(random.choice(self.iplist))
                    proxy = {"http": IP}
                    print u"正在更换代理，10s后将重新获取倒数第"+str(num_retries)+u"次"
                    print u"当前代理是："+str(proxy)
                    return self.get(url,timeout,proxy,num_retries-1)
                else:
                    print u"代理也不好使了，取消代理"
                    return self.get(url,3)


#Xz=download()
#print Xz.get("http://www.mzitu.com/all",3)